在Solaris 10的平台下新增檔案時,突然想到如果要修改檔案的更新日期,不知道可不可行,致於修改更新日期有何用途,那可不好說…
不過查了文件,發現是有方法可以修改,利用touch指令可以變更日期,參數如下:
-a = accessed
-m = modified
-t = timestamp - use [[CC]YY]MMDDhhmm[.ss] time format
測試如下圖
原本Oracle DB統計值更新的排程程式是用Crontabl每週定時執行一次,但是後來要改為每兩週執行一次,但是Crontab並沒有隔週的參數選項。
此時可以用第幾週來判斷是否執行程式,程式如下列兩種方式:
方式一,寫在script內
#!/bin/sh
v_ck=`date +%W`
v_run=`expr $v_ck % 2`
if [ $v_run = 1 ];
then backup.sh
exit 1
fi
方式二,利用test指令來判斷
10 10 * * * su - user | test $(( $( date +%W ) %2 )) -eq 1 && backup.sh
date +%W是指取得週數,例如:2023/9/21是今年的第38週
expr $v_ck % 2是用週數除以2取餘數,可以得到0或1,就可以判斷是否為隔週
因為剛好小專案有需要,所以試著寫了一個簡易的Script來批次更改檔案名稱,不然檔案數量有點多。
如下我想把檔名CH開頭的tmp檔全部改成FK,把該script放到要變更檔案的目錄下:
#!/bin/sh
for old_name in CH*.tmp
do
echo $old_name | sed s/CH/FK/g >tmp.log
new_name=`tail -1 tmp.log`
cp $old_name new_dir/$new_name
done
sed s/CH/FK/g >tmp.log是指用sed將檔名文字變更後,寫到temp.log檔,sed只能處理文字,所以這裡並不會真的變更檔名
new_name=`tail -1 tmp.log`是指用tail加上參數-l來取得tmp.log的最後一行,配合上面的程式,取出的是新的檔案名稱
最後用cp實際複製檔案並更名